# -*- coding:UTF-8 -*-
# coding:utf-8
import scrapy
from scrapy_in_practise.items import ScrapyCSDNItem
import sys
reload(sys)
sys.setdefaultencoding('utf-8')



class Douban_book_spider(scrapy.Spider):
	header = {
		'Host': 'blog.csdn.net',
		'Connection': 'keep-alive',
		'Cache-Control': 'max-age=0',
		'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
		'accept-language': 'zh-CN,zh;q=0.8',
		'referer': 'https://blog.csdn.net/',
		'user-agent': "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52"
	}

	name = "douban_book"
	# 减慢爬取速度 为1s
	download_delay = 3
	allowed_domains = ["blog.csdn.net"]
	start_urls = ['http://blog.csdn.net/column/details/16138.html']

	#scrapy 在爬去启动的时候首选会调用spider 的start_requests方法 获取 相应需要爬去的的url, 且这个URL会以Request类的形式进行封装
	#通过yield生成器逐个返回Request
	#通过回调函数 来处理 被scrapy成功爬取后且封装成Response的内容。这个回调函数调用的时机是在当前的URL已经被成功爬取后且返回了engine.
	#这个过程中，会经过--->下载中间件--->下载器--->下载中间件--->Engine--->spider 中间件--->spider
	def start_requests(self):
		for url in self.start_urls:
			yield scrapy.Request(url=url,headers=self.header, callback=self.parse)


	#通过scrapy的 css selector 或 xpath selector获取需要的页面内容。
	def parse(self, response):
		##item=ScrapyTestItem()  $('.hot_blog li a')[1].text
		## 返回list
		## 返回生成器
		## 返回字典
		## scrapy.Request
		item=ScrapyCSDNItem()
		for i in response.css('.detail_list a::text').extract():
			item['title'] = i
			yield item
#		print response.status_code







